Chat sessions have become ubiquitous. Chat sessions are a text-conferencing capability via the Internet allowing real-time communication between two users via computer. A chat session enables two or more people to use the computer as a text conferencing system. Once a chat has been initiated, either user can enter text by typing on the keyboard and the entered text will appear on the other user's monitor. Most networks and online services offer a chat feature.
The Internet Relay Chat (IRC) protocol has been designed over a number of years for use with text based conferencing. The IRC Protocol is based on the client-server model, and is well suited to running on many machines in a distributed fashion. A typical setup involves a single process (the server) forming a central point for clients (or other servers) to connect to, performing the required message delivery/multiplexing and other functions.
The server forms the backbone of IRC as it is the only component of the protocol which is able to link all the other components together: it provides a point to which clients may connect to talk to each other, and a point for other servers to connect to. The server is also responsible for providing the basic services defined by the IRC protocol.
A client is anything connecting to a server that is not another server. There are two types of clients which both serve a different purpose. User Clients are generally programs providing a text-based interface that is used to communicate interactively via IRC. Unlike users, service clients are not intended to be used manually nor for talking. They have a more limited access to the chat functions of the protocol, while optionally having access to more private data from the servers. Services are typically automatons used to provide some kind of service (not necessarily related to IRC itself) to users. An example is a service collecting statistics about the origin of users connected on the IRC network.
To be able to exchange messages, two clients must be able to locate each other. Upon connecting to a server, a client registers using a label that is then used by other servers and clients to know where the client is located. Servers are responsible for keeping track of all the labels being used. The IRC protocol provides no mean for two clients to directly communicate. All communication between clients is relayed by the server(s).